// 用户状态管理工具

// 存储键名常量
const TOKEN_KEY = 'user_token'
const USER_INFO_KEY = 'user_info'
const LOGIN_TIME_KEY = 'login_time'

// 存储用户token
export const setToken = (token) => {
  try {
    uni.setStorageSync(TOKEN_KEY, token)
  } catch (e) {
    console.error('存储token失败:', e)
  }
}

// 获取用户token
export const getToken = () => {
  try {
    return uni.getStorageSync(TOKEN_KEY) || ''
  } catch (e) {
    console.error('获取token失败:', e)
    return ''
  }
}

// 存储用户信息
export const setUserInfo = (userInfo) => {
  try {
    uni.setStorageSync(USER_INFO_KEY, userInfo)
  } catch (e) {
    console.error('存储用户信息失败:', e)
  }
}

// 获取用户信息
export const getUserInfo = () => {
  try {
    return uni.getStorageSync(USER_INFO_KEY) || null
  } catch (e) {
    console.error('获取用户信息失败:', e)
    return null
  }
}

// 存储登录时间
export const setLoginTime = (timestamp) => {
  try {
    uni.setStorageSync(LOGIN_TIME_KEY, timestamp)
  } catch (e) {
    console.error('存储登录时间失败:', e)
  }
}

// 获取登录时间
export const getLoginTime = () => {
  try {
    return uni.getStorageSync(LOGIN_TIME_KEY) || 0
  } catch (e) {
    console.error('获取登录时间失败:', e)
    return 0
  }
}

// 检查是否已登录
export const isLoggedIn = () => {
  const token = getToken()
  const userInfo = getUserInfo()
  return !!(token && userInfo)
}

// 清除所有登录信息
export const clearLoginInfo = () => {
  try {
    uni.removeStorageSync(TOKEN_KEY)
    uni.removeStorageSync(USER_INFO_KEY)
    uni.removeStorageSync(LOGIN_TIME_KEY)
  } catch (e) {
    console.error('清除登录信息失败:', e)
  }
}

// 保存完整的登录信息
export const saveLoginInfo = (loginData) => {
  const { token, userInfo } = loginData
  
  if (token) {
    setToken(token)
  }
  
  if (userInfo) {
    setUserInfo(userInfo)
  }
  
  // 记录登录时间
  setLoginTime(Date.now())
}

// 获取请求头中的认证信息
export const getAuthHeader = () => {
  const token = getToken()
  return token ? { 'Authorization': `Bearer ${token}` } : {}
}

 